Some switches, such as Ethernet switches, receive data frames at one or more ports. A data frame is an organized format of control or header data and payload data. The header data typically include fields such as the source address of the device transmitting the data frame, the destination address or addresses to which the data frame is being transmitted, length/type data indicating the length of the data frame as well as the data type of the payload data, and a frame check sequence field used as a form of error checking in verifying receipt of the data frame by the destination device. The control data are overhead that are used to assure that the payload data arrive at the destination device.
The payload data are the data of interest that are sent to the destination device. Examples of payload data include pixel data for image rendering, audio data, text data and control data (e.g., commands requesting that the destination device transmit information back to the original source device).
In some network implementations, data frames may have different sizes. For example, in a typical Ethernet network, frame size may vary from a minimum of 64 bytes to a maximum of 1,518 bytes. In general, forwarding received data frames from a switch includes one of three methods: unicast, multicast and broadcast. A unicast transmission employs a one-to-one correspondence between the source device and the destination device such that the data frame output by a source device will only be received and used by a single destination device. A multicast transmission employs a one-to-many correspondence such that a single source device transmits a data frame for receipt and use by multiple destination devices. A broadcast transmission employs a one-to-all correspondence such that a single source device transmits a data frame to all destination devices on a particular network to which the source device is connected.
A switch receives data frames and forwards them to output ports for retransmission to other switches or destination devices. In some switches, a memory is employed to temporarily store a received data frame until the needed port becomes free to output that data frame. These types of switches may be referred to as store-and-forward (SAF) switches.
Memory bandwidth usage can be inefficient as some of the memory bandwidth is not used when storing smaller data frames. To compensate for this, a memory is divided into independently addressable channels. This allows for smaller data frames to be stored in particular channels, which results in more efficient use of memory and increased throughput. That is, different channels may be accessed independently for reading or writing data frames. By dividing a large memory into channels, the overall speed, or useful bandwidth (data frame width multiplied by the memory access frequency), of a switch increases. By increasing the useful bandwidth of the internal hardware, additional ports may be supported without unnecessarily increasing the size of the memory.
When using an SAF switch to multicast or broadcast data frames over the network, a particular data frame may be read from memory multiple times, such as once for each port that is to retransmit the data frame. Since only one of the multiple channels is accessed at a time, the useful bandwidth of an SAF switch decreases when multicasting or broadcasting data frames.
Like reference symbols in the various drawings indicate like elements.